import streamlit as st
from PIL import Image
import io
def image_inference():
    # 设置页面标题
    # st.set_page_config(layout="centered")

    # 应用标题
    # st.title("图片处理应用")
    col0, uploaded_file, col4 = st.columns([0.5,3,0.5])
    with uploaded_file:
        uploaded_file = st.file_uploader(
                "", 
                type=['png', 'jpg', 'jpeg'],
                help="支持 PNG, JPG, JPEG 格式"
            )
    # 创建两列布局用于显示输入和输出图片
    col0, col1, col2, col3, col4 = st.columns([0.5,1,1,1,0.5])

    with col1:
        st.subheader("输入图片")
        # 图片上传组件

        # 显示上传的图片
        if uploaded_file is not None:
            input_image = Image.open(uploaded_file)
            st.image(input_image, caption="上传的图片", use_container_width=True)
        else:
            st.info("请上传一张图片")
            input_image = None

    with col3:
        st.subheader("输出图片")
        # 这里可以放置处理后的图片
        output_image_placeholder = st.empty()
        if input_image is not None:
            # 示例：这里只是简单显示原图，你可以替换为处理后的图片
            output_image_placeholder.image(input_image, caption="处理后的图片", use_container_width=True)
        else:
            output_image_placeholder.info("处理后的图片将显示在这里")

    with col2:
        # 文本输入输出区域
        # st.subheader("文本处理")

        # 文本输入框
        text_input = st.text_area(
            "文本输入框",
            placeholder="请输入文本内容...",
            height=100,
            help="在这里输入需要处理的文本"
        )

        # 文本输出框
        if text_input:
            # 示例处理：将文本转换为大写
            processed_text = text_input.upper()
            st.text_area(
                "文本输出框",
                value=processed_text,
                height=200,
                key="output_text"
            )
        else:
            st.text_area(
                "文本输出框",
                placeholder="处理后的文本将显示在这里...",
                height=200,
                key="output_text_empty"
            )


        # 按钮区域
        # st.subheader("操作按钮")
        button_col1, button_col2 = st.columns([1,1])

        with button_col1:
            process_button = st.button("处理图片", type="primary", use_container_width=True)

        with button_col2:
            reset_button = st.button("重置", use_container_width=True)

        # 处理按钮点击事件
        if process_button:
            if input_image is not None:
                st.success("图片处理完成！")
                # 这里可以添加你的图片处理逻辑
                # processed_image = your_image_processing_function(input_image)
                # output_image_placeholder.image(processed_image, caption="处理后的图片", use_column_width=True)
            else:
                st.warning("请先上传图片")

        # 重置按钮点击事件
        if reset_button:
            st.rerun()

    # 侧边栏信息
    # with st.sidebar:
    #     st.header("关于")
    #     st.info("""
    #     这是一个图片和文本处理应用：
        
    #     - 上传图片并查看处理结果
    #     - 使用按钮执行操作
    #     - 在文本框中输入文本并查看输出
    #     """)
        
    #     st.header("使用说明")
    #     st.write("1. 在左侧上传图片")
    #     st.write("2. 点击'处理图片'按钮")
    #     st.write("3. 在下方输入文本")
    #     st.write("4. 查看处理结果")

if __name__ == "__main__":
    image_inference()